package cn.tedu.charging.order.mqtt;

import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.nio.charset.StandardCharsets;

/**
 * 只要业务需要发送消息,全部调用这个bean对象来完成
 * 所以 业务无需再关心 实现类的情况
 */
@Component
@Slf4j
public class MyProducer {
    @Autowired
    private MqttClient mqttClient;
    /**
     * 定义一个send发送消息的方法 默认使用qos=1 retained=true的参数
     * 只接收客户端传递过来的 目标主题和消息内容
     */
    public boolean send(String topicName,String message){
        try{
            mqttClient.publish(topicName,message.getBytes(StandardCharsets.UTF_8),1,true);
            log.debug("发送消息成功,topicName={},message={}",topicName,message);
            return true;
        }catch (Exception e){
            log.error("发送消息失败,topicName={},message={}",topicName,message);
            return false;
        }
    }
}
